1. Field of Invention
The present invention relates to modulation of data transfer signals, for instance in reading from, and writing to a magnetic medium, such as a hard disk drive. The invention more specifically relates to modulation intended to make the signal properties meet specific criteria, for instance enforcing run-length limited conditions, making signals more distinguishable (increasing “distance”), and providing clock recovery information.
2. Relevant Background
FIG. 1 is a schematic representation of a data transfer chain 8, such as used in a hard disk drive. A sequence of user data to be written on a hard-disk is input to an Error Correcting Coding (ECC) circuit 10. An encoder 12, implementing the desired modulation, receives k-bit blocks of output b from the ECC 10 and produces (k+r)-bit blocks c. The (k+r)-bit blocks c are referred to as codewords. The encoder 12 outputs the codeword c to a 1/(1+D2) filter or precoder 14. The term “D” designates a one bit delay and “+” designates the bitwise exclusive OR operator. Thus, the i-th bit xi in a codeword output c by precoder 14 is expressed asxi=ci+xi−2.
Such an operation needs two initial conditions x−1 and x0 to be set for x, for instance (0, 0).
Codeword x passes in a channel 16 through one or more channel filters 18. The channel, which is where the data is written to the hard-disk and read back from the hard-disk, is typically corrupted by additive noise n, such that the received sequence r is defined by r=z+n, where z is the output of filters 18.
Based on the received sequence r, a Viterbi detector 20, for example, generates a detected sequence x^, which is a reproduction of the input x to the channel filters 18. Next, bits x^ are filtered by a filter 22 which performs the function (1+D2) that is an inverse of the function performed by precoder 14, and generates g. The output g of the filter 22 is decoded by a decoder 24 to produce a decoded sequence d, which is a reproduction of the ECC output sequence b. An ECC decoder 26 receives the output sequence d and reestablishes the user input to ECC coder 10.
As mentioned above, the codewords used in the system have k+r bits, whereas the corresponding user data blocks have a lower number of bits k, whereby there is an efficiency loss. The efficiency of the encoder is called “rate” and it is defined as k/(k+r).
Known modulation techniques implemented by the encoder 12 strive to increase the rate and impose desired properties on the codeword. Often this makes each bit of a codeword depend on every bit of the incoming data block. Such techniques have the drawback of increasing “error propagation”—often one corrupted bit in a codeword would cause the loss of most of the bits in the resulting data block.
US published application 20040059980, incorporated herein by reference, discloses a modulation method for use in encoder 12, which has short error propagation while imposing desirable properties on the codewords.
The modulation has the following generic transform:
  1            f      0        +                  f        1            ⁢      D        +                  f        2            ⁢              D        2              +                  f        3            ⁢              D        3              +    …    +                  f        r            ⁢              D        r            
where D is a one-bit delay and f=(f0, f1, f2 . . . fr) is a set of constant binary values, with f0=fr=1, characterizing the modulation scheme. In other words, given an i-th bit bi of a user data block, the i-th bit as of the resulting codeword a is defined as:ai=bi+f1ai−1+f2ai−2+ . . . +frai−r,
where i varies from 1 to k.
This operation requires r initial conditions, one for each of bits a1−r to a0. Since each initial condition is one bit, there are 2r possible choices for a set of initial conditions.
In a first part of the modulation scheme, an intermediate codeword a is calculated as above from b with a set of initial conditions set to zero. Thus:a1−r=0,a2−r=0,. . .a0=0,a1=b1,a2=b2+f1a1,a3=b3+f1a2+f2a1,. . .ar=br+f1ar−1+f2ar−2+ . . . +fr−1a1,ar+1=br+1+f1ar+f2ar−1+ . . . +fra1 . . .ak=bk+f1ak−1+f2ak−2+ . . . +frak−r,
In a second part of the modulation scheme, a set of initial conditions is selected for each codeword c to be generated, depending on a predefined map relating the initial conditions to a predefined set of values for the intermediate codeword a. For instance, if a is all 1s, all 01s or all 10s, use “initial conditions No. 1”, otherwise use “initial conditions No. 2”.
Once the set of initial conditions is selected, rather than recalculating the final codeword c by applying the above transform with the selected initial condition set, the effect t (t1−r, t2−r, . . . t0, t1, t2, . . . tk) of the initial condition set is simply added to the intermediate codeword a, i.e. c=a+t. The effect t is calculated by inserting the selected initial condition set in the above transform, and applying the transform to all variables b set to zero.
Of course, the zero initial conditions may also be selected, in which case the intermediate codeword a becomes the final codeword c.
An interesting property of this modulation technique is that these initial conditions may thus be changed from one codeword to the next without requiring the decoder to be reconfigured. This allows real-time setting of the initial conditions for each codeword so that each codeword may be made to have desired properties.
As an example with r=1 and f1=1, there is one initial condition having two possible values: 0 or 1. For a same data block, switching the initial condition between 0 and 1 switches the resulting codeword to its complement. Therefore, it is certain that one choice of the initial condition will yield a majority of 1s in the resulting codeword. If this is a desired property, the map is such that if the 0 initial condition yields more 0s than 1s in the codeword, the 1 initial condition is selected, otherwise the 0 initial condition is selected. Producing a large number of 1s is often a desired property, because each 1 causes a transition in the signal when it passes through the precoder 14, which transition helps in recovering clock information at the other end of the channel.
Since each bit ci of a codeword c is calculated from r previous bits, corruption of one bit will corrupt r further bits, i.e. the error propagation length is r+1. Therefore, in practical applications, r will be chosen small, often equal to 1 or 2. Choosing r small also increases the rate of the encoder, equal to k/(k+r).
The above disclosed modulation technique provides satisfactory results for enhancing signal properties obeying linear laws, which is the case in the specifications for hard-disks with “longitudinal recording”, i.e. having magnetic polarization that changes along the tracks of the disk.
Currently, some hard-disks tend to be of the “perpendicular recording” type, i.e. having magnetic polarization changes perpendicular to the disk. The signal specifications for such disks require the “charge” to tend to zero, and this preferably over small sequences of consecutive bits. The charge is defined as the sum of 1s and 0s written on the disk, where each 1 is summed as +1 and each 0 is summed as −1. In other words, the data recorded on the disk should tend to have as many 1s as 0s.
The zero charge requirement becomes an additional parameter to be taken into account in the modulation scheme. The known modulation schemes do not offer enough flexibility to address this problem.
What is needed, therefore, is a signal modulation scheme with enhanced flexibility, that can in particular make the charge tend to zero while satisfying other requirements in the properties of the signal.